package com.ruoyi.fun.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.fun.domain.EcUserAddress;

/**
 * 收货地址Mapper接口
 * 
 * @author ruoyi
 * @date 2025-08-06
 */
public interface EcUserAddressMapper 
{
    /**
     * 查询收货地址
     * 
     * @param addressId 收货地址主键
     * @return 收货地址
     */
    public EcUserAddress selectEcUserAddressByAddressId(Long addressId);

    /**
     * 查询收货地址列表
     * 
     * @param ecUserAddress 收货地址
     * @return 收货地址集合
     */
    public List<EcUserAddress> selectEcUserAddressList(EcUserAddress ecUserAddress);

    /**
     * 新增收货地址
     * 
     * @param ecUserAddress 收货地址
     * @return 结果
     */
    public int insertEcUserAddress(EcUserAddress ecUserAddress);

    /**
     * 修改收货地址
     * 
     * @param ecUserAddress 收货地址
     * @return 结果
     */
    public int updateEcUserAddress(EcUserAddress ecUserAddress);

    /**
     * 删除收货地址
     * 
     * @param addressId 收货地址主键
     * @return 结果
     */
    public int deleteEcUserAddressByAddressId(Long addressId);

    /**
     * 批量删除收货地址
     * 
     * @param addressIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteEcUserAddressByAddressIds(Long[] addressIds);

    /**
     * 更新用户默认地址
     * 
     * @param userId 用户ID
     * @param excludeAddressId 排除的地址ID
     * @return 结果
     */
    public int updateUserDefaultAddress(@Param("userId") Long userId, @Param("excludeAddressId") Long excludeAddressId);

    /**
     * 根据用户ID获取默认地址
     * 
     * @param userId 用户ID
     * @return 默认地址
     */
    public EcUserAddress selectDefaultAddressByUserId(Long userId);

    /**
     * 根据UserAddressID和用户ID查询UserAddress
     * 
     * @param addressId UserAddress主键
     * @param userId 用户ID
     * @return UserAddress
     */
    public EcUserAddress selectEcUserAddressByAddressIdAndUserId(@Param("addressId") Long addressId, @Param("userId") Long userId);
}
